package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	// 设置随机数种子
	seed := rand.NewSource(time.Now().UnixNano())
	r := rand.New(seed)

	for i := 0; i < 5; i++ {
		// 写法一
		switch t := r.Intn(100); t / 10 {
		case 0, 1, 2:
			fmt.Println("t 在 [ 0~30) 之间", t)
		case 3, 4, 5:
			fmt.Println("t 在 [30~50) 之间", t)
			// fallthrough 类似 C语言中 没有添加 break 的情况 继续往下执行
			fallthrough

		case 6, 7, 8:
			if t < 60 {
				fmt.Println("6? || 7? || 8? 这不是你该来的地方")
			} else {
				fmt.Println("t 在 [60~90) 之间", t)
			}
			fallthrough
		case 9:
			if t < 90 {
				fmt.Println("9? 这不是你该来的地方")
			} else {
				fmt.Println("t 在 [90~100) 之间", t)
			}
			fallthrough
		default:
			fmt.Println("至少 t 是一个数字 => ", t)
		}

		fmt.Println("=========================================================")

		// 写法二 表达式
		switch t := r.Intn(100); {
		case t < 30:
			fmt.Println("t 在 [ 0~30) 之间", t)
		case t < 50:
			fmt.Println("t 在 [30~50) 之间", t)
			fallthrough
		case t < 80:
			if t < 60 {
				fmt.Println("6? || 7? || 8? 这不是你该来的地方")
			} else {
				fmt.Println("t 在 [60~90) 之间", t)
			}
			fallthrough
		case t < 100:
			if t < 90 {
				fmt.Println("9? 这不是你该来的地方")
			} else {
				fmt.Println("t 在 [90~100) 之间", t)
			}
			fallthrough
		default:
			fmt.Println("至少 t 是一个数字 => ", t)
		}

		fmt.Println("=========================================================")
	}

}
